package com.corgi.mybatis.base;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

/**
 * @title: PageInfo
 * @description:
 * @author: dengmiao
 * @create: 2019-10-18 12:40
 **/
@Getter
@Setter
@ToString
public class PageInfo<T> {

    /**
     * 默认每一页的数据大小
     */
    private static final int PAGE_SIZE = 10;

    /**
     * 当前需要查询的页码 ,从0开始
     */
    private int pageNum;
    /**
     * 每页显示几条记录
     */
    private int pageSize;
    /**
     * 总记录数
     */
    private long totalCount;
    /**
     * 是否需要进行count查询，因为在有些情况，不需要每次都进行count查询
     */
    private boolean doCount;
    /**
     * 总页数
     */
    private long totalPage;

    /**
     * 最终查询出来的数据
     */
    private List<T> lists;

    public PageInfo() {
        this(0);
    }

    /**
     * 使用构造函数，，强制必需输入 当前页
     * @param pageNo 　当前页
     */
    public PageInfo(int pageNo) {
        this(pageNo, PAGE_SIZE, true);
    }

    /**
     * @param pageSize 每一页的大小
     * @param pageNo   当前查询第几页，从1开始
     */
    public PageInfo(int pageNo, int pageSize) {
        this(pageNo, pageSize, true);
    }

    /**
     * @param pageSize 每一页的大小
     * @param pageNum   当前查询第几页，从1开始
     * @param doCount  是否需要进行count查询
     */
    public PageInfo(int pageNum, int pageSize, boolean doCount) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.doCount = doCount;
    }
}
